home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc / OpenDoc Development / Debugging Support / OpenDoc Source Code / Binding / NoPart.cpp < prev    next >
Encoding:
Text File  |  1996-04-22  |  30.0 KB  |  1,065 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        NoPart.cpp
  3.  
  4.     Contains:    Implementation of class NoPart
  5.  
  6.     Owned by:    Caia Grisar
  7.  
  8.     Copyright:    © 1993 - 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.         <50>     10/8/95    TJ        Fixes Recomended by Refball
  13.         <49>     10/3/95    TJ        Changes done by RefBall Team
  14.         <48>     9/13/95    DM        1277216 GM:API return no ODPoints nor
  15.                                     ODPolygons
  16.         <47>      9/8/95    CG        #1283252 FB1:NoPart now attempts to rebind
  17.                                     on Open.
  18.         <46>      9/7/95    CG        #1282052 FB1:NoPart should use SOM_TRY
  19.                                     #1279121 FB3:NoPart frames the icon drawn
  20.                                     when highlighted but inactive.
  21.         <45>     8/30/95    CG        #1278868 FB3:NoPart should use factory
  22.                                     method to create shape.
  23.         <44>     8/26/95    TÇ        1257260 Remove  somInit methods. Don't call
  24.                                     IsInitialized
  25.         <43>     8/25/95    JP        1254840: Made ODGetIconFamily take frame
  26.         <42>     8/24/95    TJ        #1277595 #included PartWrap.xh
  27.         <41>     8/12/95    TÇ        1276812 Need to use TempObjs and TempRefs
  28.                                     for exception safety and to avoid TRY
  29.                                     blocks
  30.         <40>      8/3/95    RR        #1257260: Collapse B classes. Remove
  31.                                     somInit methods. Don't call IsInitialized
  32.                                     or SubclassResponsibility
  33.         <39>     6/20/95    JBS        1257315 change Facet::AcquireWindow to
  34.                                     GetWindow
  35.         <38>     6/20/95    TÇ        1229993 BB: NoPart does not handle view
  36.                                     types icon, small icon, or thumbnail.
  37.         <37>     6/16/95    EL        #1254926: Don't release usedShape until
  38.                                     finished with using its region handle.
  39.         <36>      6/9/95    CG        1257396 BB: Acquires need Releases in
  40.                                     Binding.
  41.         <35>     5/26/95    DM        1251403: Multithreading naming support.
  42.         <34>      5/7/95    TÇ        #1246386 BB: NoPart should draw icon of the
  43.                                     part its bound to in topleft corner of
  44.                                     frame.
  45.         <33>     4/26/95    CG        1210975 BB: 5$ Bugs need to be evaluated
  46.                                     and removed from Binding
  47.         <32>     4/16/95    VL        1230084: Calls ODPart in Init,
  48.                                     InitFromStorage and CloneInto.
  49.         <31>     4/13/95    JBS        1233726 add ClonePartInfo; 1238250 Frame
  50.                                     PartInfo should have multiple values;
  51.                                     1228451 call draft->ReleasePart when
  52.                                     refcount reaches 0
  53.         <30>     3/28/95    CC        1233117: Removed storageUnit parameter to
  54.                                     ShowPartTranslateDialog.
  55.         <29>     3/27/95    CC        1229640: Call to ShowTranslateDialog()
  56.                                     changed to ShowPartTranslateDialog().
  57.         <28>     3/24/95    CG        #1229993: NoPart handles icon and thumbnail
  58.                                     view types.
  59.         <27>      3/7/95    CC        1224121: CreateLink() returns an
  60.                                     ODLinkSource object.
  61.         <26>     2/24/95    jpa        Use ODNewRgn. [1220810]
  62.         <25>     2/16/95    CG        #1210975 BB: resolved 5$
  63.         <24>     1/26/95    eeh        1213354: ODActionData now an ODByteArray.
  64.         <23>     1/22/95    NP        EmbeddedFrameSpec signature changed because
  65.                                     of change to AE types.
  66.         <22>     1/20/95    JBS        1195017, 1205669: part API changes
  67.         <21>     1/13/95    RR        1192147, 1201708 Removed overrides of
  68.                                     HandleEventInEmbedded, MouseEnter,
  69.                                     MouseWithin and MouseLeave. Moved
  70.                                     functionality to HandleEvent
  71.         <20>     1/12/95    jpa        Don't use obsolete Toolbox names. [1211211]
  72.         <19>     1/10/95    CG        #1197870: BB: If NoPart is root and
  73.                                     TransDlg is dismissed, close document.
  74.         <18>    12/23/94    JBS        1186869: hide ODPartWrapper from public
  75.                                     API; 1192557: ODPartWrapper realPart access
  76.         <17>    12/15/94    CC        1197221 CreateLink() takes ODByteArray
  77.                                     parameter.
  78.                                     1205684 LinkUdated parameter renamed to
  79.                                     "change" from "id".
  80.         <16>    12/13/94    CG        #1187128: Call new
  81.                                     ODTranslation::ShowTranslateDialog()
  82.                                     method.
  83.         <15>    11/17/94    CG        1187128: Removed NoPart helper and
  84.                                     Translations dialog.
  85.         <14>     10/7/94    CG        #1188048: ShowTranslationDialog nolonger
  86.                                     requires a frame as a parameter in case
  87.                                     noPart is root part.
  88.         <13>     9/14/94    CG        #1178532: Moved some code to helper class.
  89.                                     Added double-click handling.  Added call to
  90.                                     new ShowTranslateDialog in Open.
  91.         <12>      9/9/94    CG        1183531: Implemented PartWrapper class.
  92.         <11>      9/1/94    CC        RADAR #1183005 - change AdjustBorderShape
  93.                                     param from Frame to Facet (for JBS)
  94.         <10>     8/28/94    VL        #1182975: DragEnter & DragWithin should
  95.                                     return ODDragResult (instead of ODBoolean).
  96.          <9>     8/25/94    TÇ        #1153336 NoPart should be selected if
  97.                                     clicked on
  98.          <8>     8/24/94    CG        #1181622: Updated file ownership.
  99.          <7>     8/18/94    jpa        Fixed warnings (added return types, removed
  100.                                     obsolete Externalize method.) [1181839]
  101.          <6>     8/16/94    VL        1143605: Fixed parameters to CloneInto.
  102.          <5>     8/13/94    TÇ        #1180814 Added support for ODPartWrapper
  103.                                     API and fixed Drag&Drop calls to return
  104.                                     Boolean
  105.          <4>     8/10/94    JBS        1179919: coordinate system bias changes
  106.          <3>      8/5/94    JBS        #1179151 Part API cleanup
  107.          <2>     6/28/94    CG        Synched with ODPart API change.
  108.          <1>     6/27/94    CG        first checked in
  109.          <0>     6/27/94    SV        SOMverted
  110.          <2>     2/16/94    JA        Include new AltPoint.h.
  111.          <2>      2/4/94    TÇ        fixes to compile with PPC Universal headers
  112.          <1>      2/2/94    SS        first checked in
  113.     In Progress:
  114.         
  115. */
  116.  
  117. #ifndef _PLFMDEF_
  118. #include <PlfmDef.h>
  119. #endif
  120.  
  121. #ifndef _ALTPOINT_
  122. #include <AltPoint.h>            // Use C++ savvy XMPPoint and XMPRect
  123. #endif
  124.  
  125. #ifndef _INFOUTIL_
  126. #include <InfoUtil.h>
  127. #endif
  128.  
  129. #ifndef _TEMPOBJ_
  130. #include <TempObj.h>
  131. #endif
  132.  
  133. #ifndef SOM_NoPart_xh
  134. #include <NoPart.xh>
  135. #endif
  136.  
  137. #ifndef SOM_ODFrame_xh
  138. #include <Frame.xh>
  139. #endif
  140.  
  141. #ifndef SOM_ODFacet_xh
  142. #include <Facet.xh>
  143. #endif
  144.  
  145. #ifndef SOM_ODShape_xh
  146. #include <Shape.xh>
  147. #endif
  148.  
  149. #ifndef SOM_ODTransform_xh
  150. #include <Trnsform.xh>
  151. #endif
  152.  
  153. #ifndef SOM_ODWindow_xh
  154. #include <Window.xh>
  155. #endif
  156.  
  157. #ifndef __QUICKDRAW__
  158. #include <Quickdraw.h>
  159. #endif
  160.  
  161. #ifndef SOM_ODInfo_xh
  162. #include <Info.xh>
  163. #endif
  164.  
  165. #ifndef SOM_ODFrameFacetIterator_xh
  166. #include "FrFaItr.xh"
  167. #endif
  168.  
  169. #ifndef SOM_ODStorageUnit_xh
  170. #include <StorageU.xh>
  171. #endif
  172.  
  173. #ifndef SOM_ODSession_xh
  174. #include <ODSessn.xh>
  175. #endif
  176.  
  177. #ifndef SOM_ODDispatcher_xh
  178. #include <Disptch.xh>
  179. #endif
  180.  
  181. #ifndef SOM_ODTranslation_xh
  182. #include <Translt.xh>
  183. #endif
  184.  
  185. #ifndef SOM_ODWindowState_xh
  186. #include <WinStat.xh>
  187. #endif
  188.  
  189. #ifndef _BNDNGDEF_
  190. #include <BndngDef.h>
  191. #endif
  192.  
  193. #ifndef __ICONS__
  194. #include <Icons.h>        // NewIconSuite, PlotIconSuite, DisposeIconSuite
  195. #endif
  196.  
  197. #ifndef __RESOURCES__
  198. #include <Resources.h>
  199. #endif
  200.  
  201. #ifndef _USERSRCM_
  202. #include <UseRsrcM.h>
  203. #endif
  204.  
  205. #ifndef __TOOLUTILS__
  206. #include <ToolUtils.h>
  207. #endif
  208.  
  209. #ifndef SOM_ODPartWrapper_xh
  210. #include <PartWrap.xh>
  211. #endif
  212.  
  213. #ifndef _BINDNGH_
  214. #include <BindngH.h>
  215. #endif
  216.  
  217. #ifndef SOM_ODBinding_xh
  218. #include <ODBindng.xh>
  219. #endif
  220.  
  221. #ifndef _ISOSTR_
  222. #include <ISOStr.h>
  223. #endif
  224.  
  225. #pragma segment NoPart
  226.  
  227. #define SOM_Module_nopart_Source
  228. #define VARIABLE_MACROS
  229. #include <NoPart.xih>
  230.  
  231.  
  232. //==============================================================================
  233. // Constants
  234. //==============================================================================
  235.  
  236.  
  237. //==============================================================================
  238. // Scalar Types
  239. //==============================================================================
  240. pascal OSErr
  241. DetachIconResource(ResType /*theType*/, Handle *theIcon, void* /*yourDataPtr*/);
  242.  
  243.  
  244. //==============================================================================
  245. // NoPart
  246. //==============================================================================
  247.  
  248. SOM_Scope void  SOMLINK NoPartsomUninit(Apple_NoPart *somSelf)
  249. {
  250.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  251.     Apple_NoPartMethodDebug("Apple_NoPart","somUninit");
  252.  
  253.     Apple_NoPart_parent_ODPart_somUninit(somSelf);
  254. }
  255.  
  256.  
  257. //-------------------------------------------------------------------------
  258. // From Imaging protocol
  259. //-------------------------------------------------------------------------
  260.  
  261. // --- Draw ---
  262.  
  263. SOM_Scope void  SOMLINK NoPartDraw(Apple_NoPart *somSelf, Environment *ev,
  264.         ODFacet* facet, ODShape* invalidShape)
  265. {
  266.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  267.     Apple_NoPartMethodDebug("Apple_NoPart","Draw");
  268.  
  269.    // Apple_NoPart_parent_ODPart_Draw(somSelf,ev,facet,invalidShape);
  270.  
  271. ODUnused(invalidShape);
  272.     
  273.     SOM_TRY
  274.  
  275.     ODFrame*    frame = facet->GetFrame(ev);
  276.     ODTypeToken view = frame->GetViewType(ev);
  277.     
  278.     IconTransformType     transformType = ttNone;
  279.     ODWindow*    window = facet->GetWindow(ev);
  280.  
  281.     // Init the icon family if necessary
  282.     if (_fIconFamily == kODNULL)
  283.         _fIconFamily = ODGetIconFamily(ev, frame);
  284.     
  285.     // Check to see if the frame is selected and in an active window
  286.     if ( facet->GetHighlight(ev) == kODFullHighlight &&
  287.          window->IsActive(ev) )
  288.         transformType = ttSelected;
  289.  
  290.     Rect                iconRect;
  291.  
  292.     if (view == _fSession->Tokenize(ev, kODViewAsSmallIcon))
  293.         SetRect(&iconRect, 0, 0, 16, 16);
  294.     else
  295.         SetRect(&iconRect, 0, 0, 32, 32);
  296.  
  297.     //if ( view == _fSession->Tokenize(ev, kODViewAsFrame) )
  298.     {
  299.         SetPort(window->GetPlatformWindow(ev));
  300.         {
  301.             TempODTransform localToGlobal = facet->AcquireContentTransform(ev, kODNULL);
  302.             ODPoint offset(0,0);
  303.             localToGlobal->TransformPoint(ev, &offset);
  304.             SetOrigin(-offset.IntX(), -offset.IntY());
  305.         }
  306.         
  307.         RgnHandle saveClip = ODNewRgn();
  308.         GetClip(saveClip);
  309.         ODShape* clipShape = facet->CreateShape(ev);
  310.         {
  311.             TempODShape facetClipShape = facet->AcquireAggregateClipShape(ev, kODNULL);
  312.             clipShape->CopyFrom(ev,facetClipShape);
  313.         }
  314.         RgnHandle clip = clipShape->GetQDRegion(ev);
  315.         SetClip(clip);
  316.     
  317.         ODShape* usedShape = frame->AcquireUsedShape(ev, kODNULL);
  318.         RgnHandle usedRgn = usedShape->GetQDRegion(ev);
  319.  
  320.         if ( view == _fSession->Tokenize(ev, kODViewAsLargeIcon) || 
  321.                         view == _fSession->Tokenize(ev, kODViewAsSmallIcon) )
  322.         {            
  323.             PlotIconSuite(&iconRect, atAbsoluteCenter, transformType, _fIconFamily);
  324.         }
  325.         else if ( view == _fSession->Tokenize(ev, kODViewAsThumbnail) )
  326.         {
  327.             Handle thumbnail;
  328.             {
  329.                 CUsingLibraryResources res;
  330.                 thumbnail = (Handle) GetPicture(kNoPartThumbnail);
  331.                 DetachResource(thumbnail);
  332.             }
  333.             
  334.             if ( thumbnail == kODNULL )
  335.             {
  336.                 frame->ChangeViewType(ev, _fSession->Tokenize(ev, kODViewAsFrame));
  337.                 
  338.                 THROW_IF_ERROR((ODError)ResError());
  339.                 THROW(resNotFound);
  340.             }
  341.     
  342.             Rect bounds = (**(PicHandle) thumbnail).picFrame;
  343.             
  344.             OffsetRect(&bounds, -bounds.left, -bounds.top);
  345.             DrawPicture((PicHandle) thumbnail, &bounds);
  346.             PlotIconSuite(&iconRect, atAbsoluteCenter, transformType, _fIconFamily);
  347.         }
  348.         else // if ( view == _fSession->Tokenize(ev, kODViewAsFrame) )
  349.         {
  350.             RGBColor rgb;
  351.             rgb.blue = 32768; rgb.green = 32768; rgb.red = 32768;
  352.             PixPatHandle ppat = NewPixPat();
  353.             MakeRGBPat(ppat, &rgb);
  354.     
  355.             FillCRgn(usedRgn,ppat);
  356.             FrameRgn(usedRgn);
  357.             DisposePixPat(ppat);
  358.             PlotIconSuite(&iconRect, atAbsoluteCenter, transformType, _fIconFamily);
  359.         }
  360.         
  361.         usedShape->Release(ev);
  362.     
  363.         SetOrigin(0, 0);
  364.     
  365.         SetClip(saveClip);
  366.         ODDisposeHandle((Handle)saveClip);
  367.     }
  368.  
  369.     SOM_CATCH_ALL
  370.     SOM_ENDTRY
  371. }
  372.  
  373. //-------------------------------------------------------------------------
  374. // From Storage protocol
  375. //-------------------------------------------------------------------------
  376.  
  377. SOM_Scope void  SOMLINK NoPartFulfillPromise(Apple_NoPart *somSelf, Environment *ev,
  378.         ODStorageUnitView* promiseSUView)
  379. {
  380.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  381.     Apple_NoPartMethodDebug("Apple_NoPart","FulfillPromise");
  382. }
  383.  
  384. SOM_Scope void  SOMLINK NoPartDropCompleted(Apple_NoPart *somSelf, Environment *ev,
  385.         ODPart* destPart,
  386.         ODDropResult dropResult)
  387. {
  388.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  389.     Apple_NoPartMethodDebug("Apple_NoPart","DropCompleted");
  390. }
  391.  
  392. SOM_Scope ODDragResult  SOMLINK NoPartDragEnter(Apple_NoPart *somSelf, Environment *ev,
  393.         ODDragItemIterator* dragInfo,
  394.         ODFacet* facet,
  395.         ODPoint* where)
  396. {
  397.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  398.     Apple_NoPartMethodDebug("Apple_NoPart","DragEnter");
  399.  
  400.     return kODFalse;
  401. }
  402.  
  403. SOM_Scope ODDragResult  SOMLINK NoPartDragWithin(Apple_NoPart *somSelf, Environment *ev,
  404.         ODDragItemIterator* dragInfo,
  405.         ODFacet* facet,
  406.         ODPoint* where)
  407. {
  408.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  409.     Apple_NoPartMethodDebug("Apple_NoPart","DragWithin");
  410.  
  411.     return kODFalse;
  412. }
  413.  
  414. SOM_Scope void  SOMLINK NoPartDragLeave(Apple_NoPart *somSelf, Environment *ev,
  415.         ODFacet* facet,
  416.         ODPoint* where)
  417. {
  418.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  419.     Apple_NoPartMethodDebug("Apple_NoPart","DragLeave");
  420.  
  421. }
  422.  
  423. SOM_Scope ODDropResult  SOMLINK NoPartDrop(Apple_NoPart *somSelf, Environment *ev,
  424.         ODDragItemIterator* dropInfo,
  425.         ODFacet* facet,
  426.         ODPoint* where)
  427. {
  428.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  429.     Apple_NoPartMethodDebug("Apple_NoPart","Drop");
  430.  
  431.     return kODDropFail;
  432. }
  433.  
  434. SOM_Scope void  SOMLINK NoPartContainingPartPropertiesUpdated(Apple_NoPart *somSelf, Environment *ev,
  435.         ODFrame* frame,
  436.         ODStorageUnit* propertyUnit)
  437. {
  438.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  439.     Apple_NoPartMethodDebug("Apple_NoPart","ContainingPartPropertiesUpdated");
  440.  
  441. }
  442.  
  443. SOM_Scope ODStorageUnit*  SOMLINK NoPartAcquireContainingPartProperties(Apple_NoPart *somSelf, Environment *ev,
  444.         ODFrame* frame)
  445. {
  446.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  447.     Apple_NoPartMethodDebug("Apple_NoPart","AcquireContainingPartProperties");
  448.  
  449.     return kODNULL;
  450. }
  451.  
  452. SOM_Scope ODBoolean  SOMLINK NoPartRevealFrame(Apple_NoPart *somSelf, Environment *ev,
  453.         ODFrame* embeddedFrame,
  454.         ODShape* revealShape)
  455. {
  456.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  457.     Apple_NoPartMethodDebug("Apple_NoPart","RevealFrame");
  458.  
  459.     return kODFalse;
  460. }
  461.  
  462. SOM_Scope void  SOMLINK NoPartEmbeddedFrameSpec(Apple_NoPart *somSelf, Environment *ev,
  463.         ODFrame* embeddedFrame,
  464.         ODObjectSpec* spec)
  465. {
  466.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  467.     Apple_NoPartMethodDebug("Apple_NoPart","EmbeddedFrameSpec");
  468.  
  469. }
  470.  
  471. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK NoPartCreateEmbeddedFramesIterator(Apple_NoPart *somSelf, Environment *ev,
  472.         ODFrame* frame)
  473. {
  474.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  475.     Apple_NoPartMethodDebug("Apple_NoPart","CreateEmbeddedFramesIterator");
  476.  
  477.     return kODNULL;
  478. }
  479.  
  480. SOM_Scope void  SOMLINK NoPartDisplayFrameAdded(Apple_NoPart *somSelf, Environment *ev,
  481.         ODFrame* frame)
  482. {
  483.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  484.     Apple_NoPartMethodDebug("Apple_NoPart","DisplayFrameAdded");
  485. }
  486.  
  487. SOM_Scope void  SOMLINK NoPartDisplayFrameRemoved(Apple_NoPart *somSelf, Environment *ev,
  488.         ODFrame* frame)
  489. {
  490.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  491.     Apple_NoPartMethodDebug("Apple_NoPart","DisplayFrameRemoved");
  492.  
  493. }
  494.  
  495. SOM_Scope void  SOMLINK NoPartDisplayFrameConnected(Apple_NoPart *somSelf, Environment *ev,
  496.         ODFrame* frame)
  497. {
  498.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  499.     Apple_NoPartMethodDebug("Apple_NoPart","DisplayFrameConnected");
  500. }
  501.  
  502. SOM_Scope void  SOMLINK NoPartDisplayFrameClosed(Apple_NoPart *somSelf, Environment *ev,
  503.         ODFrame* frame)
  504. {
  505.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  506.     Apple_NoPartMethodDebug("Apple_NoPart","DisplayFrameClosed");
  507.  
  508. }
  509.  
  510. SOM_Scope void  SOMLINK NoPartAttachSourceFrame(Apple_NoPart *somSelf, Environment *ev,
  511.         ODFrame* frame,
  512.         ODFrame* sourceFrame)
  513. {
  514.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  515.     Apple_NoPartMethodDebug("Apple_NoPart","AttachSourceFrame");
  516.  
  517. }
  518.  
  519. SOM_Scope void  SOMLINK NoPartFrameShapeChanged(Apple_NoPart *somSelf, Environment *ev,
  520.         ODFrame* frame)
  521. {
  522.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  523.     Apple_NoPartMethodDebug("Apple_NoPart","FrameShapeChanged");
  524.  
  525. }
  526.  
  527. SOM_Scope void  SOMLINK NoPartViewTypeChanged(Apple_NoPart *somSelf, Environment *ev,
  528.         ODFrame* frame)
  529. {
  530.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  531.     Apple_NoPartMethodDebug("Apple_NoPart","ViewTypeChanged");
  532.  
  533. }
  534.  
  535. SOM_Scope void  SOMLINK NoPartPresentationChanged(Apple_NoPart *somSelf, Environment *ev,
  536.         ODFrame* frame)
  537. {
  538.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  539.     Apple_NoPartMethodDebug("Apple_NoPart","PresentationChanged");
  540.  
  541. }
  542.  
  543. SOM_Scope void  SOMLINK NoPartSequenceChanged(Apple_NoPart *somSelf, Environment *ev,
  544.         ODFrame* frame)
  545. {
  546.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  547.     Apple_NoPartMethodDebug("Apple_NoPart","SequenceChanged");
  548.  
  549. }
  550.  
  551. SOM_Scope ODInfoType  SOMLINK NoPartReadPartInfo(Apple_NoPart *somSelf, Environment *ev,
  552.         ODFrame* frame,
  553.         ODStorageUnitView* storageUnitView)
  554. {
  555.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  556.     Apple_NoPartMethodDebug("Apple_NoPart","ReadPartInfo");
  557.  
  558.     return kODNULL;
  559. }
  560.  
  561. SOM_Scope void  SOMLINK NoPartWritePartInfo(Apple_NoPart *somSelf, Environment *ev,
  562.         ODInfoType partInfo,
  563.         ODStorageUnitView* storageUnitView)
  564. {
  565.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  566.     Apple_NoPartMethodDebug("Apple_NoPart","WritePartInfo");
  567.  
  568. }
  569.  
  570. SOM_Scope void  SOMLINK NoPartClonePartInfo(Apple_NoPart *somSelf, Environment *ev,
  571.         ODDraftKey key,
  572.         ODInfoType partInfo,
  573.         ODStorageUnitView* storageUnitView,
  574.         ODFrame* scopeFrame)
  575. {
  576.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  577.     Apple_NoPartMethodDebug("Apple_NoPart","ClonePartInfo");
  578.  
  579. }
  580.  
  581. SOM_Scope ODID  SOMLINK NoPartOpen(Apple_NoPart *somSelf, Environment *ev,
  582.         ODFrame* frame)
  583. {
  584.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  585.     Apple_NoPartMethodDebug("Apple_NoPart","Open");
  586.     
  587.     ODEditor theEditor = kODNULL; ODVolatile(theEditor);
  588.  
  589.     SOM_TRY
  590.     
  591.     theEditor = _fSession->GetBinding(ev)->
  592.                                   ChooseEditorForPart( ev, _fStorageUnit, kODNULL );
  593.  
  594.     ODUShort length = (ODUShort)ODISOStrLength(theEditor);
  595.     if (!ODISOStrNCompare(theEditor, kODBlackBoxHandlerOfLastResort, length) == 0)
  596.         ChangeEditor( _fPartWrapper, theEditor );
  597.     else
  598.     {
  599.         ODBoolean windowsOpen = (_fSession->GetWindowState(ev)->GetWindowCount(ev)>0);
  600.      
  601.         ODTranslation* translation = _fSession->GetTranslation(ev);
  602.         if (!translation->ShowPartTranslateDialog(ev, _fPartWrapper))
  603.         {
  604.             if (!windowsOpen)
  605.                 _fSession->GetDispatcher(ev)->Exit(ev);
  606.         }
  607.     }
  608.     
  609.     ODDeleteObject( theEditor );
  610.     
  611.     SOM_CATCH_ALL
  612.         ODDeleteObject( theEditor );
  613.     SOM_ENDTRY
  614.     return 0;
  615. }
  616.  
  617. SOM_Scope ODFrame*  SOMLINK NoPartRequestEmbeddedFrame(Apple_NoPart *somSelf, Environment *ev,
  618.         ODFrame* containingFrame,
  619.         ODFrame* baseFrame,
  620.         ODShape* frameShape,
  621.         ODPart* embedPart,
  622.         ODTypeToken viewType,
  623.         ODTypeToken presentation,
  624.         ODBoolean isOverlaid)
  625. {
  626.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  627.     Apple_NoPartMethodDebug("Apple_NoPart","RequestEmbeddedFrame");
  628.  
  629.     return kODNULL;
  630. }
  631.  
  632. SOM_Scope void  SOMLINK NoPartRemoveEmbeddedFrame(Apple_NoPart *somSelf, Environment *ev,
  633.         ODFrame* embeddedFrame)
  634. {
  635.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  636.     Apple_NoPartMethodDebug("Apple_NoPart","RemoveEmbeddedFrame");
  637.  
  638. }
  639.  
  640. SOM_Scope ODShape*  SOMLINK NoPartRequestFrameShape(Apple_NoPart *somSelf, Environment *ev,
  641.         ODFrame* embeddedFrame,
  642.         ODShape* frameShape)
  643. {
  644.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  645.     Apple_NoPartMethodDebug("Apple_NoPart","RequestFrameShape");
  646.  
  647.     return kODNULL;
  648. }
  649.  
  650. SOM_Scope void  SOMLINK NoPartUsedShapeChanged(Apple_NoPart *somSelf, Environment *ev,
  651.         ODFrame* embeddedFrame)
  652. {
  653.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  654.     Apple_NoPartMethodDebug("Apple_NoPart","UsedShapeChanged");
  655. }
  656.  
  657. SOM_Scope ODShape*  SOMLINK NoPartAdjustBorderShape(Apple_NoPart *somSelf, Environment *ev,
  658.         ODFacet* embeddedFacet,
  659.         ODShape* shape)
  660. {
  661.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  662.     Apple_NoPartMethodDebug("Apple_NoPart","AdjustBorderShape");
  663.  
  664.     return kODNULL;
  665. }
  666.  
  667. SOM_Scope void  SOMLINK NoPartFacetAdded(Apple_NoPart *somSelf, Environment *ev,
  668.         ODFacet* facet)
  669. {
  670.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  671. }
  672.  
  673. SOM_Scope void  SOMLINK NoPartFacetRemoved(Apple_NoPart *somSelf, Environment *ev,
  674.         ODFacet* facet)
  675. {
  676.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  677.     Apple_NoPartMethodDebug("Apple_NoPart","FacetRemoved");
  678. }
  679.  
  680. SOM_Scope void  SOMLINK NoPartCanvasChanged(Apple_NoPart *somSelf, Environment *ev,
  681.         ODFacet* facet)
  682. {
  683.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  684.     Apple_NoPartMethodDebug("Apple_NoPart","CanvasChanged");
  685. }
  686.  
  687. SOM_Scope void  SOMLINK NoPartGeometryChanged(Apple_NoPart *somSelf, Environment *ev,
  688.         ODFacet* facet,
  689.         ODBoolean clipShapeChanged,
  690.         ODBoolean externalTransformChanged)
  691. {
  692.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  693.     Apple_NoPartMethodDebug("Apple_NoPart","GeometryChanged");
  694. }
  695.  
  696. SOM_Scope void  SOMLINK NoPartCanvasUpdated(Apple_NoPart *somSelf, Environment *ev,
  697.         ODCanvas* canvas)
  698. {
  699.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  700.     Apple_NoPartMethodDebug("Apple_NoPart","CanvasUpdated");
  701. }
  702.  
  703. SOM_Scope void  SOMLINK NoPartHighlightChanged(Apple_NoPart *somSelf, Environment *ev,
  704.         ODFacet* facet)
  705. {
  706.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  707.     Apple_NoPartMethodDebug("Apple_NoPart","HighlightChanged");
  708. }
  709.  
  710. SOM_Scope ODULong  SOMLINK NoPartGetPrintResolution(Apple_NoPart *somSelf, Environment *ev,
  711.         ODFrame* frame)
  712. {
  713.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  714.     Apple_NoPartMethodDebug("Apple_NoPart","GetPrintResolution");
  715.  
  716.     return 0;
  717. }
  718.  
  719. SOM_Scope ODLinkSource*  SOMLINK NoPartCreateLink(Apple_NoPart *somSelf, Environment *ev,
  720.         ODByteArray* data)
  721. {
  722.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  723.     Apple_NoPartMethodDebug("Apple_NoPart","CreateLink");
  724.  
  725.     return kODNULL;
  726. }
  727.  
  728. SOM_Scope void  SOMLINK NoPartLinkUpdated(Apple_NoPart *somSelf, Environment *ev,
  729.         ODLink* updatedLink,
  730.         ODUpdateID change)
  731. {
  732.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  733.     Apple_NoPartMethodDebug("Apple_NoPart","LinkUpdated");
  734. }
  735.  
  736. SOM_Scope void  SOMLINK NoPartRevealLink(Apple_NoPart *somSelf, Environment *ev,
  737.         ODLinkSource* linkSource)
  738. {
  739.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  740.     Apple_NoPartMethodDebug("Apple_NoPart","RevealLink");
  741. }
  742.  
  743. SOM_Scope void  SOMLINK NoPartEmbeddedFrameUpdated(Apple_NoPart *somSelf, Environment *ev,
  744.         ODFrame* frame,
  745.         ODUpdateID change)
  746. {
  747.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  748.     Apple_NoPartMethodDebug("Apple_NoPart","EmbeddedFrameUpdated");
  749. }
  750.  
  751. SOM_Scope void  SOMLINK NoPartLinkStatusChanged(Apple_NoPart *somSelf, Environment *ev,
  752.         ODFrame* frame)
  753. {
  754.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  755.     Apple_NoPartMethodDebug("Apple_NoPart","LinkStatusChanged");
  756. }
  757.  
  758. SOM_Scope ODBoolean  SOMLINK NoPartBeginRelinquishFocus(Apple_NoPart *somSelf, Environment *ev,
  759.         ODTypeToken focus,
  760.         ODFrame* ownerFrame,
  761.         ODFrame* proposedFrame)
  762. {
  763.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  764.     Apple_NoPartMethodDebug("Apple_NoPart","BeginRelinquishFocus");
  765.  
  766.     return kODFalse;
  767. }
  768.  
  769. SOM_Scope void  SOMLINK NoPartCommitRelinquishFocus(Apple_NoPart *somSelf, Environment *ev,
  770.         ODTypeToken focus,
  771.         ODFrame* ownerFrame,
  772.         ODFrame* proposedFrame)
  773. {
  774.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  775.     Apple_NoPartMethodDebug("Apple_NoPart","CommitRelinquishFocus");
  776. }
  777.  
  778. SOM_Scope void  SOMLINK NoPartAbortRelinquishFocus(Apple_NoPart *somSelf, Environment *ev,
  779.         ODTypeToken focus,
  780.         ODFrame* ownerFrame,
  781.         ODFrame* proposedFrame)
  782. {
  783.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  784.     Apple_NoPartMethodDebug("Apple_NoPart","AbortRelinquishFocus");
  785. }
  786.  
  787. SOM_Scope void  SOMLINK NoPartFocusAcquired(Apple_NoPart *somSelf, Environment *ev,
  788.         ODTypeToken focus,
  789.         ODFrame* ownerFrame)
  790. {
  791.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  792.     Apple_NoPartMethodDebug("Apple_NoPart","FocusAcquired");
  793. }
  794.  
  795. SOM_Scope void  SOMLINK NoPartFocusLost(Apple_NoPart *somSelf, Environment *ev,
  796.         ODTypeToken focus,
  797.         ODFrame* ownerFrame)
  798. {
  799.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  800.     Apple_NoPartMethodDebug("Apple_NoPart","FocusLost");
  801. }
  802.  
  803.  
  804. SOM_Scope void  SOMLINK NoPartCloneInto(Apple_NoPart *somSelf, Environment *ev,
  805.         ODDraftKey key,
  806.         ODStorageUnit* storageUnit,
  807.         ODFrame* initiatingFrame)
  808. {
  809.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  810.     Apple_NoPartMethodDebug("Apple_NoPart","CloneInto");
  811.  
  812.     parent_CloneInto(somSelf,ev,key,storageUnit,initiatingFrame);
  813. }
  814.  
  815. SOM_Scope void  SOMLINK NoPartExternalizeKinds(Apple_NoPart *somSelf, Environment *ev,
  816.         ODTypeList* kindset)
  817. {
  818.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  819.     Apple_NoPartMethodDebug("Apple_NoPart","ExternalizeKinds");
  820. }
  821.  
  822. SOM_Scope void  SOMLINK NoPartChangeKind(Apple_NoPart *somSelf, Environment *ev,
  823.         ODType kind)
  824. {
  825.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  826.     Apple_NoPartMethodDebug("Apple_NoPart","ChangeKind");
  827. }
  828.  
  829. SOM_Scope ODBoolean  SOMLINK NoPartHandleEvent(Apple_NoPart *somSelf, Environment *ev,
  830.         ODEventData* event,
  831.         ODFrame* frame,
  832.         ODFacet* facet,
  833.         ODEventInfo* eventInfo)
  834. {
  835.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  836.     Apple_NoPartMethodDebug("Apple_NoPart","HandleEvent");
  837.     
  838.     ODBoolean    tWasHandled = kODFalse;
  839.  
  840.     SOM_TRY
  841.  
  842.     switch (event->what)
  843.     {
  844.         case nullEvent:
  845.             break;
  846.         
  847.         case mouseDown:
  848.             if ( somSelf->CheckDoubleClick(ev, event) )
  849.             {
  850.                 _fIsDoubleClick = kODTrue;
  851.             }
  852.             else
  853.             {
  854.                 TempODFrame containingFrame = frame->AcquireContainingFrame(ev);
  855.                 if (containingFrame)
  856.                 {
  857.                     event->what = kODEvtMouseDownEmbedded;
  858.                     eventInfo->embeddedFrame = frame;
  859.                     eventInfo->embeddedFacet = facet;
  860.                     TempODPart part = containingFrame->AcquirePart(ev);
  861.                     tWasHandled = part->
  862.                         HandleEvent(ev,event,containingFrame,facet->GetContainingFacet(ev),eventInfo);
  863.                 }
  864.             }
  865.             break;
  866.  
  867.         case mouseUp:
  868.  
  869.             tWasHandled = kODTrue;
  870.             somSelf->CaptureMouseUpEvent(ev, event, frame);
  871.             if (_fIsDoubleClick)
  872.             {
  873.                 somSelf->Open(ev, frame);
  874.                 tWasHandled = kODTrue;
  875.                 _fIsDoubleClick = kODFalse;
  876.             }
  877.             break;
  878.  
  879.         default:
  880.             return kODFalse;
  881.     }
  882.     
  883.     SOM_CATCH_ALL
  884.         tWasHandled = kODFalse;
  885.     SOM_ENDTRY
  886.     
  887.     return tWasHandled;
  888. }
  889.  
  890. SOM_Scope void  SOMLINK NoPartAdjustMenus(Apple_NoPart *somSelf, Environment *ev,
  891.         ODFrame* frame)
  892. {
  893.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  894.     Apple_NoPartMethodDebug("Apple_NoPart","AdjustMenus");
  895. }
  896.  
  897. SOM_Scope void  SOMLINK NoPartUndoAction(Apple_NoPart *somSelf, Environment *ev,
  898.         ODActionData* actionState)
  899. {
  900.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  901.     Apple_NoPartMethodDebug("Apple_NoPart","UndoAction");
  902. }
  903.  
  904. SOM_Scope void  SOMLINK NoPartRedoAction(Apple_NoPart *somSelf, Environment *ev,
  905.         ODActionData* actionState)
  906. {
  907.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  908.     Apple_NoPartMethodDebug("Apple_NoPart","RedoAction");
  909. }
  910.  
  911. SOM_Scope void  SOMLINK NoPartDisposeActionState(Apple_NoPart *somSelf, Environment *ev,
  912.         ODActionData* actionState,
  913.         ODDoneState doneState)
  914. {
  915.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  916.     Apple_NoPartMethodDebug("Apple_NoPart","DisposeActionState");
  917. }
  918.  
  919. SOM_Scope void  SOMLINK NoPartWriteActionState(Apple_NoPart *somSelf, Environment *ev,
  920.         ODActionData* actionState,
  921.         ODStorageUnitView* storageUnitView)
  922. {
  923.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  924.     Apple_NoPartMethodDebug("Apple_NoPart","WriteActionState");
  925.  
  926. }
  927.  
  928. SOM_Scope ODActionData  SOMLINK NoPartReadActionState(Apple_NoPart *somSelf, Environment *ev,
  929.         ODStorageUnitView* storageUnitView)
  930. {
  931.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  932.     Apple_NoPartMethodDebug("Apple_NoPart","ReadActionState");
  933.  
  934.     ODActionData data;
  935.     data._maximum = 0;
  936.     data._length = 0;
  937.     data._buffer = kODNULL;
  938.     return ((ODActionData) data);
  939. }
  940.  
  941. SOM_Scope void  SOMLINK NoPartRelease(Apple_NoPart *somSelf, Environment *ev)
  942. {
  943.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  944.     Apple_NoPartMethodDebug("Apple_NoPart","Release");
  945.     
  946.     SOM_TRY
  947.  
  948.     parent_Release(somSelf, ev);
  949.     if (somSelf->GetRefCount(ev) == 0)
  950.         _fStorageUnit->GetDraft(ev)->ReleasePart(ev, (ODPart*)_fPartWrapper);
  951.     
  952.     SOM_CATCH_ALL
  953.     SOM_ENDTRY
  954. }
  955.  
  956. SOM_Scope void  SOMLINK NoPartInitPart(Apple_NoPart *somSelf, Environment *ev,
  957.         ODStorageUnit* storageUnit, ODPart* partWrapper)
  958. {
  959.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  960.     Apple_NoPartMethodDebug("Apple_NoPart","InitPart");
  961.     
  962.     SOM_TRY
  963.  
  964.     /* Moved from somInit. SOM itself sets fields to zero
  965.     _fSession = kODNULL;
  966.     _fStorageUnit = kODNULL;
  967.     _fPartWrapper = kODNULL;
  968.     _fMouseWhen = 0;
  969.     _fMouseWhere.x = 0;
  970.     _fMouseWhere.y = 0;
  971.     _fIsDoubleClick = kODFalse;
  972.     */
  973.     parent_InitPart(somSelf, ev, storageUnit, partWrapper);
  974.     
  975.     _fStorageUnit = storageUnit;
  976.     _fPartWrapper = (ODPartWrapper*)partWrapper;
  977.     _fSession = storageUnit->GetSession(ev);
  978.     
  979.     SOM_CATCH_ALL
  980.     SOM_ENDTRY
  981. }
  982.  
  983. SOM_Scope void  SOMLINK NoPartInitPartFromStorage(Apple_NoPart *somSelf, Environment *ev,
  984.         ODStorageUnit* storageUnit, ODPart* partWrapper)
  985. {
  986.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  987.     Apple_NoPartMethodDebug("Apple_NoPart","InitPartFromStorage");
  988.     
  989.     SOM_TRY
  990.  
  991.     /* Moved from somInit. SOM itself sets fields to zero
  992.     _fSession = kODNULL;
  993.     _fStorageUnit = kODNULL;
  994.     _fPartWrapper = kODNULL;
  995.     _fMouseWhen = 0;
  996.     _fMouseWhere.x = 0;
  997.     _fMouseWhere.y = 0;
  998.     _fIsDoubleClick = kODFalse;
  999.     _fIconFamily = kODNULL;
  1000.     */    
  1001.     parent_InitPartFromStorage(somSelf, ev, storageUnit, partWrapper);
  1002.     
  1003.     _fStorageUnit = storageUnit;
  1004.     _fPartWrapper = (ODPartWrapper*)partWrapper;
  1005.     _fSession = storageUnit->GetSession(ev);
  1006.     
  1007.     SOM_CATCH_ALL
  1008.     SOM_ENDTRY
  1009. }
  1010.  
  1011.  
  1012. SOM_Scope ODBoolean  SOMLINK NoPartCaptureMouseUpEvent(Apple_NoPart *somSelf, Environment *ev,
  1013.         ODEventData* event,
  1014.         ODFrame* frame)
  1015. {
  1016.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  1017.     Apple_NoPartMethodDebug("Apple_NoPart","NoPartCaptureMouseUpEvent");
  1018.  
  1019.     ODBoolean returnVal = kODTrue;  
  1020.  
  1021.         // do this for double-click monitoring
  1022.     _fMouseWhen  = event->when;
  1023.     _fMouseWhere = event->where;
  1024.     
  1025.     return (returnVal);
  1026. }
  1027.  
  1028. SOM_Scope ODBoolean  SOMLINK NoPartCheckDoubleClick(Apple_NoPart *somSelf, Environment *ev,
  1029.         ODEventData* event)
  1030. {
  1031.     Apple_NoPartData *somThis = Apple_NoPartGetData(somSelf);
  1032.     Apple_NoPartMethodDebug("Apple_NoPart","NoPartCheckDoubleClick");
  1033.  
  1034.     ODBoolean    isDoubleClick;
  1035.     Rect        testRect;
  1036.     
  1037.     isDoubleClick = (event->when - _fMouseWhen) <= GetDblTime();
  1038.     
  1039.     SetRect(&testRect, _fMouseWhere.IntX( ), _fMouseWhere.IntY( ), 
  1040.                         _fMouseWhere.IntX( ), _fMouseWhere.IntY( ));
  1041.     InsetRect(&testRect, -2, -2);
  1042.     
  1043.     isDoubleClick &= PtInRect(event->where, &testRect);
  1044.  
  1045.     return isDoubleClick;
  1046. }
  1047.  
  1048. //--------------------------------------------------------------------
  1049. // DetachIconResource
  1050. //--------------------------------------------------------------------
  1051.  
  1052. pascal OSErr
  1053. DetachIconResource(ResType /*theType*/, Handle *theIcon, void* /*yourDataPtr*/)
  1054. {
  1055.     if (theIcon != kODNULL && *theIcon != kODNULL)
  1056.     {
  1057.         DetachResource(*theIcon);
  1058.         return ResError();
  1059.     }
  1060.     else
  1061.         return noErr;
  1062. }
  1063.  
  1064.  
  1065.